import tools from '@/tools'

/**
 * @description 浮点小数位数
 * @author 赵致喜
 * @date 2020-04-14 14:29:53
 * @version V1.0.0
 */

/**
 * @functionName  decimalValidation
 * @param {Number} value 被校验参数
 * @param {Number} number 小数位数
 * @return {Object} 返回结果
 * @description 校验浮点小数位数
 * @author 赵致喜
 * @date 2020-04-14 14:30:19
 * @version V1.0.0
 */

export const decimalValidation = (value = 0, number = 0) => {
  const DecimalType = isDecimal(value, number)
  if (!DecimalType) return DecimalType
  const resultObj = tools.resultObj(
    { value, number },
    false,
    '参数"value"与"number"不相等！'
  )
  let valueDigit = value.toString().split('.')
  if (valueDigit.length > 1) {
    valueDigit = valueDigit[1].length
  }
  if (valueDigit === number) {
    resultObj.result = true
    resultObj.message = '校验成功！'
    return resultObj
  }
  return resultObj
}

/**
 * @functionName  isDecimal
 * @param {Number} value 被校验参数
 * @param {Number} number 小数位数
 * @return {Object} 返回结果
 * @description 校验参数类型
 * @author 赵致喜
 * @date 2020-04-14 14:56:27
 * @version V1.0.0
 */

const isDecimal = (value, number) => {
  const valueType = tools.getRawType(value)
  const numberType = tools.getRawType(number)
  const resultObj = tools.resultObj(
    { value, number },
    false,
    '参数"value"或"number"类型不正确，请传入[Number]类型！'
  )
  if (valueType === 'Number' && numberType === 'Number') {
    resultObj.result = true
    resultObj.message = '校验成功！'
    return resultObj
  }
  return resultObj
}
